package executor;

import com.lowagie.text.DocumentException;
import calculator.GeneraReport;
import calculator.GeneraReportMenu;
import calculator.GeneraReportRicette;
import boundary.Home;
import store.Menu;
import store.TutteRicette;
import store.TuttiMenu;
import dataview.Cibi;
import dataview.CriterioRicerca;
import dataview.FormatoReport;
import dataview.Menus;
import dataview.Report;
import dataview.Ricette;
import dataview.Termini;
import dataview.TipoReportMenu;
import exceptions.DBException;
import exceptions.ElementoNonPresente;

public class GestireMenu {
	
	private Termini tagUsabili;
	private Main main;
	private Home home;
	private Cibi tuttiCibi;
	private Ricette tutteRicette;
	private Menus ultimiCercati;
	private Menu menu;
	
	public GestireMenu(Main main, Home home) {
		this.main = main;
		this.home = home;
		try {
			ultimiCercati = TuttiMenu.getTuttiMenu().ultimiCercati();
		} catch (DBException e) {
			e.printStackTrace();
		}
		home.creaAccedereMenu(this, ultimiCercati);
	}
	
	public void inserireMenu(String nMenu) {
		try {
			if (TuttiMenu.getTuttiMenu().presente(nMenu))
				home.fallito();
			else {
				Menu m = new Menu(nMenu);
				home.richiediInfoMenu(m);
			}
		} catch (DBException e) {
			e.printStackTrace();
		}
	}
	
	public void modificareMenu(Menu menu) {
		
	}
	
	public void eliminareMenu(Menu menu) {
		this.menu = menu;
		home.ok();
	}
	
	public void fareReport(Menus menu, TipoReportMenu tipo, FormatoReport formato, String path) throws DocumentException {
		Report r = GeneraReportMenu.generaReportMenu(menu, tipo);
		GeneraReport.generaFile(r, formato, path);
	}

	public void conferma() throws DBException, ElementoNonPresente {
		TuttiMenu.getTuttiMenu().elimina(menu);
	}

	public void ricercare(CriterioRicerca critRic) throws DBException {
		Menus ricercati = TuttiMenu.getTuttiMenu().ricercare(critRic);
		home.passaMenu(ricercati);
	}

}
